package com.serialstamper.api.wrapper.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class File implements Serializable {

	public static enum Status {
		PENDING,
		PROCESSING,
		READY,
		ERROR
	}
	
	private String id;
	private Date entryDate;
	private String name;
	private String fileName;
	private String storageKey;
	private String sourceUrl;
	private String mimeType;
	private String md5;
	private String sha1;
	private long size;
	private Status status;
	
	private Map<String, String> metadata = new LinkedHashMap<String, String>();
	private List<FileTimestamp> timestamps = new ArrayList<FileTimestamp>();
	private List<FileUser> users = new ArrayList<FileUser>();
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public Date getEntryDate() {
		return entryDate;
	}
	public void setEntryDate(Date entryDate) {
		this.entryDate = entryDate;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getStorageKey() {
		return storageKey;
	}
	public void setStorageKey(String storageKey) {
		this.storageKey = storageKey;
	}
	public String getMimeType() {
		return mimeType;
	}
	public void setMimeType(String mimeType) {
		this.mimeType = mimeType;
	}
	public String getMd5() {
		return md5;
	}
	public void setMd5(String md5) {
		this.md5 = md5;
	}
	public String getSha1() {
		return sha1;
	}
	public void setSha1(String sha1) {
		this.sha1 = sha1;
	}
	public long getSize() {
		return size;
	}
	public void setSize(long size) {
		this.size = size;
	}
	public Map<String, String> getMetadata() {
		return metadata;
	}
	public void setMetadata(Map<String, String> metadata) {
		this.metadata = metadata;
	}
	public Status getStatus() {
		return status;
	}
	public void setStatus(Status status) {
		this.status = status;
	}
	public String getSourceUrl() {
		return sourceUrl;
	}
	public void setSourceUrl(String sourceUrl) {
		this.sourceUrl = sourceUrl;
	}
	public List<FileTimestamp> getTimestamps() {
		return timestamps;
	}
	public void setTimestamps(List<FileTimestamp> timestamps) {
		this.timestamps = timestamps;
	}
	public String getFileName() {
		return fileName;
	}
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
	
	public List<FileUser> getUsers() {
		return users;
	}
	public void setUsers(List<FileUser> users) {
		this.users = users;
	}
	
	
}
